前言
前面幾天,我們開始接觸 Linux 程式的使用說明,學習如何透過文件了解程式需要哪些參數。
今天的 pwn.college 題目則正式介紹了 man 指令。man 是 manual 的縮寫,可以用來查閱 Linux 指令或程式的使用手冊。
這次的挑戰要求我們找出 /challenge/challenge 的特殊參數,並使用正確的參數取得 Flag。
與其直接猜測參數,不如先查閱官方手冊。這也是我今天想練習的重點,遇到不熟悉的指令時,先閱讀文件,再根據文件提供的資訊進行操作。
man 指令在 Linux 中,man 是很常用的文件查詢工具。
例如,想了解 ls 指令的使用方式,可以輸入
man ls
系統就會開啟 ls 的手冊,讓我們查看它的功能、使用格式及可用選項。
而今天的挑戰目標是 /challenge/challenge,因此我們輸入
man challenge
這裡有一個需要注意的地方 man 後面通常接的是手冊條目的名稱,而不是程式的完整檔案路徑。
| 區塊 | 說明 |
|---|---|
| NAME | 顯示程式名稱及簡短描述 |
| SYNOPSIS | 說明程式的使用格式 |
| DESCRIPTION | 詳細介紹程式功能及可用參數 |
| SEE ALSO | 提供其他相關手冊或參考資料 |
其中,這次最重要的是 SYNOPSIS 和 DESCRIPTION。SYNOPSIS 可以讓我們了解指令的基本格式,而 DESCRIPTION 則會進一步說明各個參數的用途。
題目:Readin Manuals
執行 man challenge 後,我們可以看到題目提供的使用說明。
其中,DESCRIPTION 區塊列出了以下內容:
從這些說明可以發現,程式提供了三個選項。
--fortune:讀取一段 fortune 內容。--version:顯示版本資訊後結束。--kiibcd NUM:當 NUM 的值為 203 時,印出 Flag。真正的關鍵就是最後一個選項。
我們可以把 --kiibcd NUM 拆成兩個部分理解:
--kiibcd 是選項名稱。NUM 是這個選項需要接收的參數值。手冊明確指出,只有當 NUM 等於 203 時,程式才會印出 Flag。
因此,我們不需要繼續猜測,也不需要嘗試其他數字,直接按照文件提供的條件執行即可。
確認參數後,我們回到終端機,輸入指令/challenge/challenge 加上 --kiibcd 203
執行結果如下
成功取得 Flag
這次的操作步驟其實很簡單
man challenge 查看程式手冊。DESCRIPTION 中尋找可用選項。--kiibcd 所要求的參數值。/challenge/challenge --kiibcd 203。這題的難點不是指令本身,而是能否從文件中找到正確的使用方式。
除了查閱內容之外,man 還提供了一些方便的操作方式。
| 操作 | 功能 |
|---|---|
↑、↓ |
逐行瀏覽內容 |
Page Up、Page Down |
上下翻頁 |
/關鍵字 |
搜尋指定文字 |
n |
前往下一個搜尋結果 |
q |
離開手冊 |
例如,如果手冊內容很多,可以按下 /,輸入 flag 後按 Enter,快速尋找與 Flag 有關的說明。
不過,搜尋結果仍然需要搭配上下文閱讀,避免只看到關鍵字,卻忽略了參數的使用條件。
今天的挑戰比起前幾天更偏向閱讀文件,而不是單純練習指令。一開始看到題目說有一個隱藏參數,原本可能會想直接嘗試不同的參數名稱。不過,透過 man challenge,就能直接找到程式提供的選項,以及每個選項的使用方式。這也讓我理解到,學習 Linux 不只是記住指令,更重要的是知道如何查詢不熟悉的功能。未來在接觸資安工具、系統管理或程式測試時,遇到不清楚的參數,也可以先查閱手冊,確認指令格式與參數要求,再進行實際操作,與其死記每個指令,不如學會在需要時找到正確的文件。